
package com.hc.util;

import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

public class GenericToModelUtil {
	/**
	 * 
	 * @Description： 转Object[]为对象实例
	 * @param clazz 
	 * @param t instance
	 * @param value 数据对象
	 * @return
	 * @throws Exception
	 * @author:  
	 * @since: 2017年2月23日 下午5:29:02
	 */
	public <T> T loadValue(Class<T> clazz,T t, Object[] value) throws Exception{
		List<Method> me = setMethod(clazz);
		int size = value.length;
		for(int i=0;i<size;i++){
			me.get(i).invoke(t, value[i]);
		}
		return t;
	}
	private <T> List<Method> setMethod(Class<T> clazz) throws Exception{  
        Field[] fields = clazz.getDeclaredFields();
        List<Method> sets = new ArrayList<Method>();
        for(Field field : fields){  
            PropertyDescriptor descriptor = new PropertyDescriptor(field.getName(), clazz);  
            Method method = descriptor.getWriteMethod(); 
            sets.add(method);  
        } 
        return sets;
    }  
}